#include <LiquidCrystal.h>    //声明调用库

boolean pushCiShu=0;    //存储hold按键的状态

//1602A液晶显示器
const int rs=12,en=11,d4=5,d5=4,d6=3,d7=2;    //对应引脚
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);   //创建一个名为lcd的实例（对象），这里是4线法d4~d7

//定义超声波的引脚
#define TrigPin 10  //输出引脚
#define EchoPin 8 //输入引脚

float juli; //存储距离的变量

void setup()  {
  lcd.begin(16,2);    //初始化LCD的宽度和高度,设置16列2行

  pinMode(TrigPin, OUTPUT);    //设置arduino引脚为输出模式
  pinMode(EchoPin, INPUT);     //设置arduino引脚为输入模式

  pinMode(7, INPUT_PULLUP);   //将引脚7设置为输入上拉模式

}

void loop() {
  
  //hold按键的一些操作
  if (!digitalRead(7)) {
    pushCiShu = 1;
  }

  //暂停发送2毫秒
  digitalWrite(TrigPin, LOW);
  delayMicroseconds(2);

  //发送超声波10毫秒
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);
  
  //将回波时间换算成厘米
  juli = float(pulseIn(EchoPin, HIGH) * 17)/1000;

  lcd.clear();    //清屏
  lcd.setCursor(0,0);   //把光标设置在0列1行(第2行开头)上
  lcd.print(juli);
  lcd.print("cm");

  //hold按键的一些操作
  while(pushCiShu) {
    delay(500);
    if (!digitalRead(7)) {
      pushCiShu = 0;
      break;
    }
  }
  delay(500);
}